Reference
- 문제 출처 - HackerRank
- 파이썬 연습 - Practice - Python
개인적인 생각과 상상으로 작성한 내용들이 포함되어 있습니다
문제를 풀고 Discussion Tab을 참고하며 코드 스타일을 개선하려고 노력하고자 합니다
HackerRank
HackerRank의 Python 연습문제들은 아래와 같은 카테고리로 분류 된다:
Subdomain
IntroductionBasic Data Types- Strings
- Sets
- Math
- Itertools
- Collections
- Date and Time
- Errors and Exceptions
- Classes
- Built-Ins
- Python Functionals
- Regex and Parsing
- XML
- Closures and Decorators
- Numpy
- Debugging
Strings
기본 개념
Text Alignment
다음 함수를 사용하여 문자열은 좌, 우, 중앙으로 정렬시킬 수 있다
width는 필수로 입력해야하고 공백을 채울 문자(fillchar)는 선택적으로 입력, 기본값은 spacestr.ljust(width[, fillchar])
: 왼쪽 정렬str.center(width[, fillchar])
: 오른쪽 정렬str.rjust(width[, fillchar])
: 가운데 정렬
5
H HHH HHHHH HHHHHHH HHHHHHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHHHHHHHHHHHHHHHHHHHHHH HHHHHHHHHHHHHHHHHHHHHHHHH HHHHHHHHHHHHHHHHHHHHHHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHHHHHH HHHHHHH HHHHH HHH H
Cone, Pillars, Belt 부분으로 나누어서 그림을 그려나가는 것이 흥미로웠다
아래 코드는 해당 문제를 풀때 Editor에 자동으로 입력되어 있던 코드에서 ljust, rjust, center 함수만 끼워 넣은 것이다
#Replace all **\_\_** with rjust, ljust or center. |
- 재사용성을 생각했을 때, 각 부분들을 정의해 놓고 마지막에 출력할 때 필요한 부분들을 블럭을 조립하듯이 쌓으면 훨씬 깔끔한 것 같다
width =int(input()) |
Text Wrap
문제 : 입력되는 문자열 S를 길이 w만큼 잘라서 출력
예제 : ‘ABCDEFGHIJKLIMNOQRSTUVWXYZ’를 4개씩 잘라서 ‘ABCD’, ‘EFGH’, … 로 출력
ABCDEFGHIJKLIMNOQRSTUVWXYZ
4
ABCD
EFGH
IJKL
IMNO
QRST
UVWX
YZ
import time |
- 7배 정도 느린데 굳이 textwrap 모듈을 사용해야 할까?
|
Designer Door Mat
문제 : 예제와 같은 NxM 크기의 디자인 패턴을 그리는 문제(가운데 welcome, 패턴에는 -
, |
, .
세개만 사용, N은 홀수이고 M의 크기는 N의 3배)
예제 : 디자인 패턴 참고
9 27
------------.|.------------ ---------.|..|..|.--------- ------.|..|..|..|..|.------ ---.|..|..|..|..|..|..|.--- ----------WELCOME---------- ---.|..|..|..|..|..|..|.--- ------.|..|..|..|..|.------ ---------.|..|..|.--------- ------------.|.------------
위 Text Alignment 문제의 아이디어를 응용하여 패턴과 가운데 글자를 하나의 데이터로 정의하여 풀었음
if **name** == '**main**': |
Alphabet Rangoli
문제 : Rangoli는 인도의 전통미술 패턴이다. 입력받는 N 크기의 랑골리 패턴을 그리는 문제
예제 : 랑골리 패턴 참고(크기가 커질수록 알파벳순으로 글자도 늘어남)
5
--------e-------- ------e-d-e------ ----e-d-c-d-e---- --e-d-c-b-c-d-e-- e-d-c-b-a-b-c-d-e --e-d-c-b-c-d-e-- ----e-d-c-d-e---- ------e-d-e------ --------e--------
import string |